1. Field of the Invention
The invention relates generally to Fibre Channel (FC) systems and more specifically relates to improved methods and apparatus for managing virtual FC targets using multiple, asynchronous dependent physical I/O transactions.
2. Discussion of Related Art
It is generally known for storage subsystems to provide a layer of virtualization that hides the physical characteristics of underlying storage devices from attached host systems. For example, RAID storage management techniques may define a logical volume distributed over multiple physical disk drives (e.g., “striped” and/or “mirrored”) while presenting a single logical unit (e.g., logical volume or virtual volume) to attached host systems. RAID storage management controller devices associated with the disk drives perform the logical/virtual to physical mapping to permit access to the storage capacity.
In the context of virtualized storage using Fibre Channel (FC) communications, a Data Path Manager (DPM) module may cooperate with a Storage Virtualization Manager (SVM) to provide the desired mapping from a virtual FC target (e.g., a logical volume or virtual volume) to one or more physical FC target devices (e.g., portions of one or more physical disk drives). In such a context, a host initiated read or write command is communicated over the Fibre Channel fabric to a DPM which, in turn, produces a virtual to physical I/O command tree used to issue one or more commands to appropriate physical FC target devices. In such DPM/SVM Fibre Channel environments, a typical translation from the virtual I/O request to corresponding physical I/O may generate a simple, single I/O operation to a single physical target device or may generate multiple physical I/O operations to multiple physical target devices.
In accordance with Fibre Channel standards, an exchange identifier (XID) is associated with the each of the one or more physical I/O operations to associate the operations with the original host initiated read or write command. Where a host initiated read or write command results in multiple physical I/O operations, the exchange ID for each such physical I/O operation is typically allocated from a pool of available X ID values. The multiple X ID values allocated for the multiple physical I/O operations are then associated with one another so that the DPM can determine when all physical I/O operations corresponding to a virtual FC target read or write have completed. Further, when all of the multiple physical I/O operations completed, all associated XID values for a given virtual FC target read or write command can be released for re-use.
Where multiple physical I/O operations are issued in a sequential manner (each subsequent operation waiting for a preceding operation to complete), each X ID may be allocated as needed in sequence from the pool of available X ID values. One of the allocated X ID values (e.g., the first or the last) is then used in the FC response sent back to the requesting host system. Management of the multiple X ID values where the corresponding multiple physical I/O operations are issued in a sequential manner often uses a queue structure (e.g., linked list data structure) to maintain the pool of available X ID values. A similar list structure may be used to associate the multiple XID values associated with a single virtual target read or write command.
In some storage management subsystems, such as RAID level 1 (mirrored) RAID level 5 (striped), data may be more effectively processed by issuing multiple parallel I/O operations to the multiple physical FC target devices corresponding to the virtual FC target addressed by the host initiated read or write command. The multiple physical I/O operations are considered “dependent” in that all must complete in some manner to complete the underlying request directed to the virtual FC target. Although such parallel I/O operations are favored for optimal performance, in the context of virtual Fibre Channel targets, the multiple exchange ID values utilized for the dependent, multiple physical I/O operations must be carefully managed because the multiple parallel I/O operations may be completed asynchronously with respect to the one another. In other words, a first physical I/O operation may be directed to a first physical target utilizing a first exchange ID in the Fibre Channel media and a second physical I/O operation may be directed to a second physical target utilizing a second exchange ID in the Fibre Channel media. However, the second physical I/O operation may complete before the first physical I/O operation due to the asynchronous nature of the parallel operation of the multiple physical targets. The exchange ID corresponding to the second I/O operation (the first physical operation to complete) may generate confusion and complexity in determining the ultimate status of each of the multiple physical I/O operations corresponding to the host initiated read or write command. Complex logic and data structures may be required to determine which exchange IDs are related to the same underlying virtual target operation. This added complexity may be reflected in additional memory accesses to manage the list structures associated with the available X_ID pool and/or with the list structures associating the multiple allocated X_ID values related to a single read/write command to a virtual target.
Thus, it is an ongoing challenge to manage asynchronous dependent I/O in the context of a virtual Fibre Channel target and more specifically an ongoing challenge to manage the exchange ID values utilized where multiple physical I/O operations are performed substantially in parallel responsive to a host initiated read or write command directed to a virtual Fibre Channel target.